/**
 * 带头节点的链表l，删除一个最小值节点（最小值唯一）
 */

#include"LinkedList.h"

/**
 * p和pre同步后移
 * 如果遇到比minp还要小的节点，就给minp赋值
 */
LinkedList* del(LinkedList*l){
    //工作指针和前驱
    LinkedListNode *pre=l,*p=pre->next;
    //最小值指针和前驱
    LinkedListNode *minpre=pre,*minp=p;
    while (p!=nullptr)
    {
        //当p的值小于minp的值，给minp重新赋值
        if(p->val<minp->val){
            minp=p;
            minpre=pre;
        }
        //工作指针一直往后移动
        pre=p;
        p=p->next;
    }
    minpre->next=minp->next;
    delete minp;
    return l;
    
}